package com.jsbs.iam.user.mapper;

import com.jsbs.iam.user.entity.IamApplyMenu;
import com.jsbs.iam.user.vo.AdminRoleButtonVo;
import com.jsbs.iam.user.vo.AdminRoleMenuVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface IamApplyMenuMapper {
    int deleteByPrimaryKey(Long id);

    int insert(IamApplyMenu record);

    int insertSelective(IamApplyMenu record);

    IamApplyMenu selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(IamApplyMenu record);

    int updateByPrimaryKey(IamApplyMenu record);

    /**
     * 根据批菜单编码查询菜单数据
     * @param applyCodeList
     * @return
     */
    List<IamApplyMenu> getApplyMenu (@Param("applyCodeList") List<String> applyCodeList);

    /**
     * 功能描述：根据菜单编码查询菜单信息
     * @param menuCodeList
     * @return
     */
    List<IamApplyMenu> queryByMenuCode(@Param("menuCodeList") List<String> menuCodeList);

    /**
     * 功能描述：根据应用编码获取菜单列表
     * @param iamApplyCode
     * @return
     */
    List<IamApplyMenu> queryByApplyCode(@Param("applyCode") String iamApplyCode);

    /**
     * 功能描述：根据角色主键获取菜单列表
     * @param roleId
     * @return
     */
    List<AdminRoleMenuVo> getMenuList(@Param("roleId") Long roleId);

    /**
     * 功能描述：根据角色+菜单获取按钮列表
     * @param menuId
     * @param roleId
     * @return
     */
    List<AdminRoleButtonVo> getButtonList(@Param("menuId") Long menuId, @Param("roleId") Long roleId);

    /**
     * 功能描述：根据菜单ID获取菜单数据
     * @param menuIdList
     * @return
     */
    List<IamApplyMenu> queryByMenuIds(@Param("menuIdList") List<Long> menuIdList);

    /**
     * 功能描述：获取按钮列表
     * @param roleId
     * @param menuIdList
     * @return
     */
    List<Long> getButtonListByMenuIds(@Param("roleId") Long roleId, @Param("menuIdList") List<Long> menuIdList);
}